#pragma once

#include <vector>

#include "Globals.h"
#include "Rect.h"
#include "SequenceInfo.h"

namespace game_engine { namespace components
{

/*!
 * \class AnimationSequence
 * \brief 
 */
class AnimationSequence
{
///////////////////////////////////////////////////////////////////////////////
// Attribute definition
///////////////////////////////////////////////////////////////////////////////
private:
	INT32 frameCount;
    vector<data_format::FrameInfo> frames;
    vector<utils::Rect> clipRegion;
	vector<INT32> timeout;

///////////////////////////////////////////////////////////////////////////////
// Method definition
///////////////////////////////////////////////////////////////////////////////
public:
    // Constructors and Destructors
    AnimationSequence(void);
    AnimationSequence(const FLOAT32 frameWidth, const FLOAT32 frameHeight, 
        const vector<data_format::FrameInfo> &f, const INT32 textureWidth);
    virtual ~AnimationSequence(void);

    // Getters
    const INT32 getFrameCount(void) const;
    const utils::Rect& getClipRegion(const INT32 idFrame) const;
    const data_format::FrameInfo& getFrameInfo(const INT32 idFrame) const;
    const INT32 getTimeout(const INT32 idFrame) const;

};

}}
